////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017-2018 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// THIS IS AUTO-GENERATED CODE.  PLEASE DO NOT EDIT (File bug reports against tools).
///
/// Auto-generated by: ParameterParser V1.1.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  eis_1_0_0.cpp
/// @brief Auto-generated Chromatix parameter file
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "eis_1_0_0.h"
#include "parametersetmanager.h"

EIS_1_0_0_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Default Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_eis10TypeClass::chromatix_eis10TypeClass(
    const CHAR* name)
    : ParameterModule(name, MAJOR, MINOR, PATCH, 0, 0, 0, 0)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(chromatix_eis10_reserve);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Constructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_eis10TypeClass::chromatix_eis10TypeClass(
    const CHAR* name,
    UINT32 modeId,
    UINT16 mode,
    UINT16 subMode,
    UINT32 group)
    : ParameterModule(name, MAJOR, MINOR, PATCH, modeId, mode, subMode, group)
{
    PARAMETER_INITIALIZE(SymbolTableID);
    PARAMETER_INITIALIZE(module_version);
    PARAMETER_INITIALIZE(chromatix_eis10_reserve);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Destructor
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
chromatix_eis10TypeClass::~chromatix_eis10TypeClass()
{
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// GetName
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const CHAR* chromatix_eis10TypeClass::GetName(
    const CHAR* type)
{
    const CHAR* name = type;
    CHAR temp[ParameterFileSymbolTableEntry::TYPE_LEN + 1];
    if (PARAMETER_STRCMP(type, ParameterFileSymbolTableEntry::GetType(temp, "eis10_sw")) == 0)
    {
        name = "eis10_sw";
    }
    return name;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10_reserveType
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10_reserveType(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10_reserveType* structure)
{
    BOOL result = TRUE;
    result = result && Loadchromatix_eis10_reserveType_generalStruct(entry, &structure->general);
    result = result && Loadchromatix_eis10_reserveType_timingStruct(entry, &structure->timing);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10_reserveType_generalStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10_reserveType_generalStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10_reserveType::generalStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadFloat(&structure->virtual_margin);
    result = result && entry->ReadUInt32(&structure->focal_length);
    result = result && entry->ReadUInt32(&structure->gyro_frequency);
    result = result && entry->ReadFloat(&structure->gyro_noise_floor);
    result = result && entry->ReadFloat(&structure->gyro_pixel_scale);
    result = result && entry->ReadFloat(&structure->res_param_1);
    result = result && entry->ReadFloat(&structure->res_param_2);
    result = result && entry->ReadFloat(&structure->res_param_3);
    result = result && entry->ReadFloat(&structure->res_param_4);
    result = result && entry->ReadFloat(&structure->res_param_5);
    result = result && entry->ReadFloat(&structure->res_param_6);
    result = result && entry->ReadFloat(&structure->res_param_7);
    result = result && entry->ReadFloat(&structure->res_param_8);
    result = result && entry->ReadFloat(&structure->res_param_9);
    result = result && entry->ReadFloat(&structure->res_param_10);
    result = result && Loadchromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_1_tabStruct(entry, &structure->res_lut_param_1_tab);
    result = result && Loadchromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_2_tabStruct(entry, &structure->res_lut_param_2_tab);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_1_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_1_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10_reserveType::generalStruct::res_lut_param_1_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->res_lut_param_1[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_2_tabStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10_reserveType_chromatix_eis10_reserveType_generalStruct_res_lut_param_2_tabStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10_reserveType::generalStruct::res_lut_param_2_tabStruct* structure)
{
    BOOL result = TRUE;
    for (UINT32 i = 0; result && i < 32; i++)
    {
        result = result && entry->ReadFloat(&structure->res_lut_param_2[i]);
    }

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10_reserveType_timingStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10_reserveType_timingStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10_reserveType::timingStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->s3d_offset_1);
    result = result && entry->ReadInt32(&structure->s3d_offset_2);
    result = result && entry->ReadInt32(&structure->s3d_offset_3);
    result = result && entry->ReadInt32(&structure->s3d_offset_4);
    result = result && entry->ReadFloat(&structure->s3d_threshold_1);
    result = result && entry->ReadFloat(&structure->s3d_threshold_2);
    result = result && entry->ReadFloat(&structure->s3d_threshold_3);
    result = result && entry->ReadFloat(&structure->s3d_threshold_4_ext);
    result = result && entry->ReadInt32(&structure->rs_offset_1);
    result = result && entry->ReadInt32(&structure->rs_offset_2);
    result = result && entry->ReadInt32(&structure->rs_offset_3);
    result = result && entry->ReadInt32(&structure->rs_offset_4);
    result = result && entry->ReadFloat(&structure->rs_threshold_1);
    result = result && entry->ReadFloat(&structure->rs_threshold_2);
    result = result && entry->ReadFloat(&structure->rs_threshold_3);
    result = result && entry->ReadFloat(&structure->rs_threshold_4_ext);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load chromatix_eis10Type
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadchromatix_eis10Type(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10Type* structure)
{
    BOOL result = TRUE;
    result = result && Loadmodule_versionStruct(entry, &structure->module_version);
    result = result && Loadchromatix_eis10_reserveType(entry, &structure->chromatix_eis10_reserve);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Load module_versionStruct
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL chromatix_eis10TypeClass::Loadmodule_versionStruct(
    ParameterFileSymbolTableEntry* entry,
    chromatix_eis10Type::module_versionStruct* structure)
{
    BOOL result = TRUE;
    result = result && entry->ReadInt32(&structure->major_revision);
    result = result && entry->ReadInt32(&structure->minor_revision);
    result = result && entry->ReadInt32(&structure->incr_revision);

    return result;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Parse symbol table entry, and return a new object
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ParameterModule* chromatix_eis10TypeClass::Parse(
    ParameterSetManager* manager,
    ParameterFileSymbolTableEntry* entry) const
{
    chromatix_eis10TypeClass* cls = NULL;

    if (PARAMETER_STRCMP(Type, entry->Type) == 0 && Major == entry->Major &&
        Minor == entry->Minor && Patch == entry->Patch)
    {
        cls = PARAMETER_NEW chromatix_eis10TypeClass(GetName(entry->Type), 
            entry->ModeId, entry->Mode, entry->SubMode, entry->Group);
        if (cls != NULL)
        {
            BOOL result = TRUE;

            cls->SymbolTableID = entry->ID;
            cls->ID            = entry->ID;

            result = result && Loadchromatix_eis10Type(entry, cls);

            if (!result)
            {
                PARAMETER_DELETE cls;
                cls = NULL;
            }
        }
    }
    return (ParameterModule*)cls;
}


EIS_1_0_0_NAMESPACE_END
